1
Введение в агентов, решающих проблемы
PolyU COMP5511Лекция 2
00:00

От рефлексии к планированию

В эволюции дизайна агентов мы переходим от рефлексивных агентов, которые сопоставляют восприятия напрямую с действиями на основе простых правил (например, «Если машина впереди тормозит, начать торможение»), к агентам, решающим проблемы. Рефлексивные агенты работают в непосредственном контексте, тогда как агенты, решающие проблемы, являются целеориентированными. Они учитывают будущие последствия своих действий, чтобы найти последовательность, удовлетворяющую конкретной цели.

  • Рефлексивный агент: $Действие = Функция(Восприятие)$
  • Агент планирования: $Последовательность\_действий = Поиск(Состояние, Цель)$

Атомарное представление состояния

На этом фундаментальном уровне агенты используют атомарное представление. Это означает, что состояние мира рассматривается как черный ящик — единый узел без внутренней структуры, видимой алгоритму поиска. Агент рассуждает только о:

  • Состояниях ($S$): Снимках окружающей среды.
  • Действиях ($A$): Переходах между состояниями.
  • Тест цели: Булева проверка, принадлежит ли состояние $s \in S_{цели}$.

Цикл решения проблем

Агент, решающий проблемы, следует четкому четырехэтапному циклу для навигации по среде:

  1. Формулирование цели: Принятие решения о том, какую цель преследовать, исходя из текущей ситуации.
  2. Формулирование проблемы: Абстрагирование реального мира в математическую модель (Состояния и Действия).
  3. Поиск: Моделирование последовательностей действий для нахождения оптимального пути.
  4. Исполнение: Выполнение действий, найденных на этапе поиска, без дальнейших размышлений (при условии статической среды).
Python Implementation (agent_types.py)
1
class ReflexAgent:
2
defactself, percept):
3
# Прямое сопоставление: Правило -> Действие
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__self):
8
self.seq = [] # Буферизованная последовательность действий
9
10
defactself, percept):
11
# Если мы находимся в середине выполнения, продолжаем
12
ifself.seq:
13
returnself.seq.pop0
14
15
# В противном случае, Планируем (Поиск)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Поиск возвращает список действий
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop0